#include <iostream>
using namespace std;
// 写一个类b继承类a，类a中有公开，保护，私有三种权限的变量，测试三种变量是否能在子类和类外使用
class A
{
public:
    A()
    {
        x = 100;
        cout << "a的构造函数被使用" << endl;
    }
    void print()
    {
        cout << "x = " << x << endl;
    }
    void SetX(int a)
    {
        x = a;
    }

protected:
    int x;

private:
    int y;
};
class B : public A
{
public:
    B()
    {
        x = 200;    // 保护权限，可以在子类中使用
        // y = 200; // 错误，y是私有权限，不能在子类中使用
        cout << "b的构造函数被使用" << endl;
        cout << "x = " << x << endl;
        A::SetX(400);
        A::print(); // 调用父类的print函数
    }
};

int main()
{
    B b;
    b.SetX(300);
    b.print();
    // cout << b.x << endl; // 错误，x是保护权限，不能在类外使用
    // cout << b.y << endl; // 错误，y是私有权限，不能在类外使用
}